package HibernateDAO;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import Hibernate.HibernateUtil;
import beans.Lista;
import beans.Rodamiento;

public class HibernateRodamientoDAO {
	private static HibernateRodamientoDAO instancia = null;
	
	private static SessionFactory sf = null;

	public static HibernateRodamientoDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new HibernateRodamientoDAO();
		} 
		return instancia;
	}
	

	@SuppressWarnings("unchecked")
	public List<Rodamiento> obtenerTodosLosRodamientos(){
		Session session = sf.openSession();
		Query q = session.createQuery("from Rodamiento");
		List<Rodamiento> listaDeRodamientos = new ArrayList<Rodamiento>(q.list());
		session.close();
		return listaDeRodamientos;
	}
	
	public void guardarUnRodamiento(Rodamiento rodamiento){
		Session session = sf.openSession();
		session.beginTransaction();
		session.saveOrUpdate(rodamiento); 
		session.getTransaction().commit();
		session.close();		
	}
	
	public void borrarUnRodamiento(Rodamiento rodamiento){
		Session session = sf.openSession();
		session.beginTransaction();
		session.delete(rodamiento); 
		session.getTransaction().commit();
		session.close();
	}
	

	public Rodamiento obtenerRodamiento(String codigo){
		Session session = sf.openSession();
		Query q = session.createQuery("FROM Rodamiento rod WHERE rod.codigo = :codigo").setString("codigo",codigo);
		Rodamiento rod = (Rodamiento) q.uniqueResult();
		session.close();
		return rod;
	}
	
	
	//sistema web
	public List<String> obtenerItemOrigenes(){
		Session session = sf.openSession();
		Query q = session.createQuery("select origen from Rodamiento group by origen order by origen asc");
		@SuppressWarnings("unchecked")
		List<String> lista = q.list();
		session.close();
		return lista;
		
	}

	//sistema web
	public List<String> obtenerItemMarcas(){
		Session session = sf.openSession();
		Query q = session.createQuery("select marca from Rodamiento group by marca order by marca asc");
		@SuppressWarnings("unchecked")
		List<String> lista = q.list();
		session.close();
		return lista;
	}
	
//	public static void main(String[] args)
//	{
//		sf = HibernateUtil.getSessionFactory();
//		List<String> lista = obtenerItemMarcas();
//		List<String> lista2 = obtenerItemOrigenes();
//		
//	}
	
	
}